#include <iostream>
#include <sstream>
#include <string>
#include <memory>
#include <jsoncpp/json/json.h>
// 实现数据的序列化
bool serialize(const Json::Value &val, std::string &body)
{
    std::stringstream ss;
    // 先实例化⼀个⼯⼚类对象
    Json::StreamWriterBuilder swb;
    // 通过⼯⼚类对象来⽣产派⽣类对象
    std::unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());
    int ret = sw->write(val, &ss);
    if (ret != 0)
    {
        std::cout << "json serialize failed!\n";
        return false;
    }
    body = ss.str();
    return true;
}
// 实现json字符串的反序列化
bool unserialize(const std::string &body, Json::Value &val)
{
    // 实例化⼯⼚类对象
    Json::CharReaderBuilder crb;
    // ⽣产CharReader对象
    std::string errs;
    std::unique_ptr<Json::CharReader> cr(crb.newCharReader());
    bool ret = cr->parse(body.c_str(), body.c_str() + body.size(), &val,
                         &errs);
    if (ret == false)
    {
        std::cout << "json unserialize failed : " << errs << std::endl;
        return false;
    }
    return true;
}